#pragma once
#include "IObject.h"

struct IBrowserService :
	public IObject
{

public: 
	virtual HRESULT ReferenceObject(const void *) = 0;
	virtual HRESULT ReleaseObject(const void *) = 0;
	virtual HRESULT VariantClear(const void *) = 0;
	virtual HRESULT ScriptParamInit(struct ScriptParam *) = 0;
	virtual HRESULT ScriptParamClear(struct ScriptParam *) = 0;
	virtual HRESULT ScriptExceptionInfoClear(struct ScriptExceptionInfo *) = 0;
	virtual HRESULT VariantToScriptParam(const void *, XINT32, struct ScriptParam *) = 0;
	virtual HRESULT VariantToScriptParam(const void *, struct ScriptParam *) = 0;
	virtual HRESULT VariantFromScriptParam(struct ScriptParam *, void *) = 0;
	virtual HRESULT GetBrowserHandle(void * *) = 0;
	virtual HRESULT GetWindow(void * *) = 0;
	virtual HRESULT GetDocument(void * *) = 0;
	virtual HRESULT GetDocumentUri(XUINT16 * *) = 0;
	virtual HRESULT CreateFunction(const void *, void * *) = 0;
	virtual HRESULT CreateManagedObject(const void *, XINT32, void * *) = 0;
	virtual HRESULT GetControlElement(void * *) = 0;
	virtual HRESULT ReferenceEquals(const void *, const void *) = 0;
	virtual HRESULT GetIdentity(const void *, void * *) = 0;
	virtual HRESULT GetElementByID(const void *, XUINT16 *, void * *) = 0;
	virtual HRESULT GetElementsByTagName(const void *, XUINT16 *, void * *) = 0;
	virtual HRESULT CreateElement(const void *, XUINT16 *, void * *) = 0;
	virtual HRESULT GetParent(const void *, void * *) = 0;
	virtual HRESULT GetChildren(const void *, void * *) = 0;
	virtual HRESULT InsertChild(const void *, const void *, void *) = 0;
	virtual HRESULT RemoveChild(const void *, const void *) = 0;
	virtual HRESULT GetAttribute(const void *, XUINT16 *, XUINT32, XUINT16 * *, XUINT32 *) = 0;
	virtual HRESULT SetAttribute(const void *, XUINT16 *, XUINT32, XUINT16 *, XUINT32) = 0;
	virtual HRESULT RemoveAttribute(const void *, XUINT16 *, XUINT32) = 0;
	virtual HRESULT AttachEvent(const void *, XUINT16 *, const void *) = 0;
	virtual HRESULT DetachEvent(const void *, XUINT16 *, const void *) = 0;
	virtual HRESULT Focus(const void *) = 0;
	virtual HRESULT GetElementCollectionCount(const void *, HRESULT *) = 0;
	virtual HRESULT GetElementCollectionItem(const void *, HRESULT, void * *) = 0;
	virtual HRESULT GetBrowserInfo(XUINT16 * *, XUINT16 * *, XUINT16 * *, XUINT16 * *) = 0;
	virtual HRESULT GetCookiesEnabled(XUINT32 *) = 0;
	virtual HRESULT GetEventInfo(struct DOMEventInfo *) = 0;
	virtual HRESULT InvokeBrowserFunction(const void *, XINT32, struct ScriptParam *, struct ScriptParam *, struct ScriptExceptionInfo *) = 0;
	virtual HRESULT Invoke(const void *, XUINT16 *, XINT32, struct ScriptParam *, struct ScriptParam *, struct ScriptExceptionInfo *) = 0;
	virtual HRESULT GetProperty(const void *, XUINT16 *, struct ScriptParam *, struct ScriptExceptionInfo *) = 0;
	virtual HRESULT SetProperty(const void *, XUINT16 *, struct ScriptParam *, struct ScriptExceptionInfo *) = 0;
	virtual HRESULT Eval(void *, XUINT16 *, struct ScriptParam *, struct ScriptExceptionInfo *) = 0;
	virtual HRESULT NormalizeScriptMemberArgs(XINT32 *, XINT32, void *) = 0;
	virtual HRESULT StopPropagation(const void *) = 0;
	virtual HRESULT PreventDefault(const void *) = 0;
	virtual HRESULT TogglePopupBlocker(const XUINT32) = 0;
	virtual HRESULT InPrivateMode(XUINT32 *) = 0;
	virtual HRESULT InCustomHost(XUINT32 *) = 0;
	virtual XUINT32 IsEnabled() = 0;
	virtual HRESULT GetConstructor(XINT32, void * *) = 0;
	virtual HRESULT SetRuntimeHost(struct IManagedRuntimeHost *) = 0;
};